Async Iterable
#
Async Iterable#
generator IteratorSymbol.iterator 는 next() 가 구현된 일반 객체보다, 제너레이터를 반환하도록 구현하는 경우가 더 많다.
#
비동기 동작을 추가한 generator#
Pagination많은 온라인 서비스가 Pagination 을 구현해 데이터를 전송한다. 사용자 목록이 필요해서 서버에 요청을 보내면, 서버는 일정 숫자 단위로 사용자를 끊어 정보를 한 페이지로 구성한 후 다음페이지를 볼 수 있는 url 과 함께 응답한다.
#
co 라이브러리generator 를 비동기식으로 작동시킬 수 있는 co 라이브러리
- Github에서 데이터를 불러오는 예제를 다시 작성
#
iterable & generator 요약iterable | async iterable | |
---|---|---|
iterator 를 반환하는 메서드 | Symbol.iterator | Symbol.asyncIterator |
next() 가 반환하는 값 | { value:..., done: true/false } | { value:..., done: true/false } 를 감싸는 Promise |
generator | async generator | |
---|---|---|
선언 | function* | async function* |
next() 가 반환하는 값 | { value:..., done: true/false } | { value:..., done: true/false } 를 감싸는 Promise |
웹개발을 하다보면 띄엄띄엄 들어오는 데이터 스트림을 다루어야 할 때가 자주 생긴다.
- 용량이 큰 파일 다운로드&업로드
이런 데이터를 처리할 때, async generator 를 사용할 수 있다.
몇몇 브라우저 및 호스트 환경에서는 데이터스트림을 처리해주는 API 를 제공하기도 한다.
- 한쪽에서 받은 데이터를 다른 쪽에 즉각 전달하는게 가능해진다. (TODO)
#
Reference & Comment- https://gitlab.com/siots-study/topics/-/wikis/asyncronous
- https://www.youtube.com/watch?v=JaHlR1IGLN8&list=PL7jH19IHhOLMmmjrwCi7-dMFVdoU0hhgF
- https://helloworldjavascript.net/pages/285-async.html
- https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Promise/all
- https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Promise/race
- https://ko.javascript.info/async
- https://ko.javascript.info/generators-iterators
- https://www.bsidesoft.com/8325
- https://www.bsidesoft.com/6037